rcar_gen3: drivers: qos: H3: Configure DBSC QoS from a table
authorMarek Vasut <[email protected]>
Fri, 14 Jun 2019 13:52:45 +0000 (15:52 +0200)
committerMarek Vasut <[email protected]>
Mon, 17 Jun 2019 13:13:22 +0000 (15:13 +0200)
Convert the DBSC QoS setting function to a simple table of register-value
pairs and pass it to common rcar_qos_dbsc_setting() to write those values
to matching registers.

Signed-off-by: Marek Vasut <[email protected]>
Change-Id: I62b133ea4f4129a641b779a782938976ad52fbfe

drivers/staging/renesas/rcar/qos/H3/qos_init_h3_v11.c
drivers/staging/renesas/rcar/qos/H3/qos_init_h3_v20.c
drivers/staging/renesas/rcar/qos/H3/qos_init_h3_v30.c
drivers/staging/renesas/rcar/qos/H3/qos_init_h3n_v30.c

index 631294834906d44497dfbaaf6dd0970b7244a2e6..329bcb82cf19d468db9e4089c3de85c0209e6c05 100644 (file)
 
 #include "qos_init_h3_v11_mstat.h"
 
-static void dbsc_setting(void)
-{
+struct rcar_gen3_dbsc_qos_settings h3_v11_qos[] = {
        /* BUFCAM settings */
        /* DBSC_DBCAM0CNF0 not set */
-       io_write_32(DBSC_DBCAM0CNF1, 0x00044218);
-       io_write_32(DBSC_DBCAM0CNF2, 0x000000F4);
+       { DBSC_DBCAM0CNF1, 0x00044218 },
+       { DBSC_DBCAM0CNF2, 0x000000F4 },
        /* DBSC_DBCAM0CNF3 not set */
-       io_write_32(DBSC_DBSCHCNT0, 0x080F0037);
-       io_write_32(DBSC_DBSCHCNT1, 0x00001010);
-       io_write_32(DBSC_DBSCHSZ0, 0x00000001);
-       io_write_32(DBSC_DBSCHRW0, 0x22421111);
+       { DBSC_DBSCHCNT0, 0x080F0037 },
+       { DBSC_DBSCHCNT1, 0x00001010 },
+       { DBSC_DBSCHSZ0, 0x00000001 },
+       { DBSC_DBSCHRW0, 0x22421111 },
 
        /* DDR3 */
-       io_write_32(DBSC_SCFCTST2, 0x012F1123);
+       { DBSC_SCFCTST2, 0x012F1123 },
 
        /* QoS Settings */
-       io_write_32(DBSC_DBSCHQOS00, 0x0000F000);
-       io_write_32(DBSC_DBSCHQOS01, 0x0000E000);
-       io_write_32(DBSC_DBSCHQOS02, 0x00007000);
-       io_write_32(DBSC_DBSCHQOS03, 0x00000000);
-       io_write_32(DBSC_DBSCHQOS40, 0x00000E00);
-       io_write_32(DBSC_DBSCHQOS41, 0x00000DFF);
-       io_write_32(DBSC_DBSCHQOS42, 0x00000400);
-       io_write_32(DBSC_DBSCHQOS43, 0x00000200);
-       io_write_32(DBSC_DBSCHQOS90, 0x00000C00);
-       io_write_32(DBSC_DBSCHQOS91, 0x00000BFF);
-       io_write_32(DBSC_DBSCHQOS92, 0x00000400);
-       io_write_32(DBSC_DBSCHQOS93, 0x00000200);
-       io_write_32(DBSC_DBSCHQOS130, 0x00000980);
-       io_write_32(DBSC_DBSCHQOS131, 0x0000097F);
-       io_write_32(DBSC_DBSCHQOS132, 0x00000300);
-       io_write_32(DBSC_DBSCHQOS133, 0x00000180);
-       io_write_32(DBSC_DBSCHQOS140, 0x00000800);
-       io_write_32(DBSC_DBSCHQOS141, 0x000007FF);
-       io_write_32(DBSC_DBSCHQOS142, 0x00000300);
-       io_write_32(DBSC_DBSCHQOS143, 0x00000180);
-       io_write_32(DBSC_DBSCHQOS150, 0x000007D0);
-       io_write_32(DBSC_DBSCHQOS151, 0x000007CF);
-       io_write_32(DBSC_DBSCHQOS152, 0x000005D0);
-       io_write_32(DBSC_DBSCHQOS153, 0x000003D0);
-}
+       { DBSC_DBSCHQOS00, 0x0000F000 },
+       { DBSC_DBSCHQOS01, 0x0000E000 },
+       { DBSC_DBSCHQOS02, 0x00007000 },
+       { DBSC_DBSCHQOS03, 0x00000000 },
+       { DBSC_DBSCHQOS40, 0x00000E00 },
+       { DBSC_DBSCHQOS41, 0x00000DFF },
+       { DBSC_DBSCHQOS42, 0x00000400 },
+       { DBSC_DBSCHQOS43, 0x00000200 },
+       { DBSC_DBSCHQOS90, 0x00000C00 },
+       { DBSC_DBSCHQOS91, 0x00000BFF },
+       { DBSC_DBSCHQOS92, 0x00000400 },
+       { DBSC_DBSCHQOS93, 0x00000200 },
+       { DBSC_DBSCHQOS130, 0x00000980 },
+       { DBSC_DBSCHQOS131, 0x0000097F },
+       { DBSC_DBSCHQOS132, 0x00000300 },
+       { DBSC_DBSCHQOS133, 0x00000180 },
+       { DBSC_DBSCHQOS140, 0x00000800 },
+       { DBSC_DBSCHQOS141, 0x000007FF },
+       { DBSC_DBSCHQOS142, 0x00000300 },
+       { DBSC_DBSCHQOS143, 0x00000180 },
+       { DBSC_DBSCHQOS150, 0x000007D0 },
+       { DBSC_DBSCHQOS151, 0x000007CF },
+       { DBSC_DBSCHQOS152, 0x000005D0 },
+       { DBSC_DBSCHQOS153, 0x000003D0 },
+};
 
 void qos_init_h3_v11(void)
 {
-       dbsc_setting();
+       rcar_qos_dbsc_setting(h3_v11_qos, ARRAY_SIZE(h3_v11_qos), false);
 
        /* DRAM Split Address mapping */
 #if (RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH) || \
index 2e2f426f46b4b54dc2b70ff94a0890c8f2dd4e62..c20ab08662db442b892d33a9a9d48feb15566f8e 100644 (file)
 
 #endif
 
-static void dbsc_setting(void)
-{
-       /* Register write enable */
-       io_write_32(DBSC_DBSYSCNT0, 0x00001234U);
-
+struct rcar_gen3_dbsc_qos_settings h3_v20_qos[] = {
        /* BUFCAM settings */
-       io_write_32(DBSC_DBCAM0CNF1, 0x00043218U);
-       io_write_32(DBSC_DBCAM0CNF2, 0x000000F4U);
-       io_write_32(DBSC_DBCAM0CNF3, 0x00000000U);
-       io_write_32(DBSC_DBSCHCNT0, 0x000F0037U);
-       io_write_32(DBSC_DBSCHSZ0, 0x00000001U);
-       io_write_32(DBSC_DBSCHRW0, 0x22421111U);
+       { DBSC_DBCAM0CNF1, 0x00043218U },
+       { DBSC_DBCAM0CNF2, 0x000000F4U },
+       { DBSC_DBCAM0CNF3, 0x00000000U },
+       { DBSC_DBSCHCNT0, 0x000F0037U },
+       { DBSC_DBSCHSZ0, 0x00000001U },
+       { DBSC_DBSCHRW0, 0x22421111U },
 
        /* DDR3 */
-       io_write_32(DBSC_SCFCTST2, 0x012F1123U);
+       { DBSC_SCFCTST2, 0x012F1123U },
 
        /* QoS Settings */
-       io_write_32(DBSC_DBSCHQOS00, 0x00000F00U);
-       io_write_32(DBSC_DBSCHQOS01, 0x00000B00U);
-       io_write_32(DBSC_DBSCHQOS02, 0x00000000U);
-       io_write_32(DBSC_DBSCHQOS03, 0x00000000U);
-       io_write_32(DBSC_DBSCHQOS40, 0x00000300U);
-       io_write_32(DBSC_DBSCHQOS41, 0x000002F0U);
-       io_write_32(DBSC_DBSCHQOS42, 0x00000200U);
-       io_write_32(DBSC_DBSCHQOS43, 0x00000100U);
-       io_write_32(DBSC_DBSCHQOS90, 0x00000100U);
-       io_write_32(DBSC_DBSCHQOS91, 0x000000F0U);
-       io_write_32(DBSC_DBSCHQOS92, 0x000000A0U);
-       io_write_32(DBSC_DBSCHQOS93, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS120, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS121, 0x00000030U);
-       io_write_32(DBSC_DBSCHQOS122, 0x00000020U);
-       io_write_32(DBSC_DBSCHQOS123, 0x00000010U);
-       io_write_32(DBSC_DBSCHQOS130, 0x00000100U);
-       io_write_32(DBSC_DBSCHQOS131, 0x000000F0U);
-       io_write_32(DBSC_DBSCHQOS132, 0x000000A0U);
-       io_write_32(DBSC_DBSCHQOS133, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS140, 0x000000C0U);
-       io_write_32(DBSC_DBSCHQOS141, 0x000000B0U);
-       io_write_32(DBSC_DBSCHQOS142, 0x00000080U);
-       io_write_32(DBSC_DBSCHQOS143, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS150, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS151, 0x00000030U);
-       io_write_32(DBSC_DBSCHQOS152, 0x00000020U);
-       io_write_32(DBSC_DBSCHQOS153, 0x00000010U);
-
-       /* Register write protect */
-       io_write_32(DBSC_DBSYSCNT0, 0x00000000U);
-}
+       { DBSC_DBSCHQOS00, 0x00000F00U },
+       { DBSC_DBSCHQOS01, 0x00000B00U },
+       { DBSC_DBSCHQOS02, 0x00000000U },
+       { DBSC_DBSCHQOS03, 0x00000000U },
+       { DBSC_DBSCHQOS40, 0x00000300U },
+       { DBSC_DBSCHQOS41, 0x000002F0U },
+       { DBSC_DBSCHQOS42, 0x00000200U },
+       { DBSC_DBSCHQOS43, 0x00000100U },
+       { DBSC_DBSCHQOS90, 0x00000100U },
+       { DBSC_DBSCHQOS91, 0x000000F0U },
+       { DBSC_DBSCHQOS92, 0x000000A0U },
+       { DBSC_DBSCHQOS93, 0x00000040U },
+       { DBSC_DBSCHQOS120, 0x00000040U },
+       { DBSC_DBSCHQOS121, 0x00000030U },
+       { DBSC_DBSCHQOS122, 0x00000020U },
+       { DBSC_DBSCHQOS123, 0x00000010U },
+       { DBSC_DBSCHQOS130, 0x00000100U },
+       { DBSC_DBSCHQOS131, 0x000000F0U },
+       { DBSC_DBSCHQOS132, 0x000000A0U },
+       { DBSC_DBSCHQOS133, 0x00000040U },
+       { DBSC_DBSCHQOS140, 0x000000C0U },
+       { DBSC_DBSCHQOS141, 0x000000B0U },
+       { DBSC_DBSCHQOS142, 0x00000080U },
+       { DBSC_DBSCHQOS143, 0x00000040U },
+       { DBSC_DBSCHQOS150, 0x00000040U },
+       { DBSC_DBSCHQOS151, 0x00000030U },
+       { DBSC_DBSCHQOS152, 0x00000020U },
+       { DBSC_DBSCHQOS153, 0x00000010U },
+};
 
 void qos_init_h3_v20(void)
 {
-       dbsc_setting();
+       rcar_qos_dbsc_setting(h3_v20_qos, ARRAY_SIZE(h3_v20_qos), true);
 
        /* DRAM Split Address mapping */
 #if (RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH) || \
index 7147a9da4f2878af2b8a75f36ceee1815662b24f..1fe6182b6433556a3be15261320ac12db62bfbf4 100644 (file)
 
 #endif
 
-static void dbsc_setting(void)
-{
-       /* Register write enable */
-       io_write_32(DBSC_DBSYSCNT0, 0x00001234U);
-
+struct rcar_gen3_dbsc_qos_settings h3_v30_qos[] = {
        /* BUFCAM settings */
-       io_write_32(DBSC_DBCAM0CNF1, 0x00043218U);
-       io_write_32(DBSC_DBCAM0CNF2, 0x000000F4U);
-       io_write_32(DBSC_DBCAM0CNF3, 0x00000000U);
-       io_write_32(DBSC_DBSCHCNT0, 0x000F0037U);
-       io_write_32(DBSC_DBSCHSZ0, 0x00000001U);
-       io_write_32(DBSC_DBSCHRW0, 0x22421111U);
+       { DBSC_DBCAM0CNF1, 0x00043218U },
+       { DBSC_DBCAM0CNF2, 0x000000F4U },
+       { DBSC_DBCAM0CNF3, 0x00000000U },
+       { DBSC_DBSCHCNT0, 0x000F0037U },
+       { DBSC_DBSCHSZ0, 0x00000001U },
+       { DBSC_DBSCHRW0, 0x22421111U },
 
        /* DDR3 */
-       io_write_32(DBSC_SCFCTST2, 0x012F1123U);
+       { DBSC_SCFCTST2, 0x012F1123U },
 
        /* QoS Settings */
-       io_write_32(DBSC_DBSCHQOS00, 0x00000F00U);
-       io_write_32(DBSC_DBSCHQOS01, 0x00000B00U);
-       io_write_32(DBSC_DBSCHQOS02, 0x00000000U);
-       io_write_32(DBSC_DBSCHQOS03, 0x00000000U);
-       io_write_32(DBSC_DBSCHQOS40, 0x00000300U);
-       io_write_32(DBSC_DBSCHQOS41, 0x000002F0U);
-       io_write_32(DBSC_DBSCHQOS42, 0x00000200U);
-       io_write_32(DBSC_DBSCHQOS43, 0x00000100U);
-       io_write_32(DBSC_DBSCHQOS90, 0x00000100U);
-       io_write_32(DBSC_DBSCHQOS91, 0x000000F0U);
-       io_write_32(DBSC_DBSCHQOS92, 0x000000A0U);
-       io_write_32(DBSC_DBSCHQOS93, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS120, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS121, 0x00000030U);
-       io_write_32(DBSC_DBSCHQOS122, 0x00000020U);
-       io_write_32(DBSC_DBSCHQOS123, 0x00000010U);
-       io_write_32(DBSC_DBSCHQOS130, 0x00000100U);
-       io_write_32(DBSC_DBSCHQOS131, 0x000000F0U);
-       io_write_32(DBSC_DBSCHQOS132, 0x000000A0U);
-       io_write_32(DBSC_DBSCHQOS133, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS140, 0x000000C0U);
-       io_write_32(DBSC_DBSCHQOS141, 0x000000B0U);
-       io_write_32(DBSC_DBSCHQOS142, 0x00000080U);
-       io_write_32(DBSC_DBSCHQOS143, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS150, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS151, 0x00000030U);
-       io_write_32(DBSC_DBSCHQOS152, 0x00000020U);
-       io_write_32(DBSC_DBSCHQOS153, 0x00000010U);
-
-       /* Register write protect */
-       io_write_32(DBSC_DBSYSCNT0, 0x00000000U);
-}
+       { DBSC_DBSCHQOS00, 0x00000F00U },
+       { DBSC_DBSCHQOS01, 0x00000B00U },
+       { DBSC_DBSCHQOS02, 0x00000000U },
+       { DBSC_DBSCHQOS03, 0x00000000U },
+       { DBSC_DBSCHQOS40, 0x00000300U },
+       { DBSC_DBSCHQOS41, 0x000002F0U },
+       { DBSC_DBSCHQOS42, 0x00000200U },
+       { DBSC_DBSCHQOS43, 0x00000100U },
+       { DBSC_DBSCHQOS90, 0x00000100U },
+       { DBSC_DBSCHQOS91, 0x000000F0U },
+       { DBSC_DBSCHQOS92, 0x000000A0U },
+       { DBSC_DBSCHQOS93, 0x00000040U },
+       { DBSC_DBSCHQOS120, 0x00000040U },
+       { DBSC_DBSCHQOS121, 0x00000030U },
+       { DBSC_DBSCHQOS122, 0x00000020U },
+       { DBSC_DBSCHQOS123, 0x00000010U },
+       { DBSC_DBSCHQOS130, 0x00000100U },
+       { DBSC_DBSCHQOS131, 0x000000F0U },
+       { DBSC_DBSCHQOS132, 0x000000A0U },
+       { DBSC_DBSCHQOS133, 0x00000040U },
+       { DBSC_DBSCHQOS140, 0x000000C0U },
+       { DBSC_DBSCHQOS141, 0x000000B0U },
+       { DBSC_DBSCHQOS142, 0x00000080U },
+       { DBSC_DBSCHQOS143, 0x00000040U },
+       { DBSC_DBSCHQOS150, 0x00000040U },
+       { DBSC_DBSCHQOS151, 0x00000030U },
+       { DBSC_DBSCHQOS152, 0x00000020U },
+       { DBSC_DBSCHQOS153, 0x00000010U },
+};
 
 void qos_init_h3_v30(void)
 {
        unsigned int split_area;
 
-       dbsc_setting();
+       rcar_qos_dbsc_setting(h3_v30_qos, ARRAY_SIZE(h3_v30_qos), true);
 
 #if RCAR_DRAM_LPDDR4_MEMCONF == 0      /* 1GB */
        split_area = 0x1BU;
index e9f900a3f2e244b0b8d2e323c8fc6ff20fd6c9e8..f1ee41b977f757b6afc397ad42814f17ff4ad329 100644 (file)
 
 #endif
 
-static void dbsc_setting(void)
-{
-       /* Register write enable */
-       io_write_32(DBSC_DBSYSCNT0, 0x00001234U);
-
+struct rcar_gen3_dbsc_qos_settings h3n_v30_qos[] = {
        /* BUFCAM settings */
-       io_write_32(DBSC_DBCAM0CNF1, 0x00043218U);
-       io_write_32(DBSC_DBCAM0CNF2, 0x000000F4U);
-       io_write_32(DBSC_DBCAM0CNF3, 0x00000000U);
-       io_write_32(DBSC_DBSCHCNT0, 0x000F0037U);
-       io_write_32(DBSC_DBSCHSZ0, 0x00000001U);
-       io_write_32(DBSC_DBSCHRW0, 0x22421111U);
+       { DBSC_DBCAM0CNF1, 0x00043218U },
+       { DBSC_DBCAM0CNF2, 0x000000F4U },
+       { DBSC_DBCAM0CNF3, 0x00000000U },
+       { DBSC_DBSCHCNT0, 0x000F0037U },
+       { DBSC_DBSCHSZ0, 0x00000001U },
+       { DBSC_DBSCHRW0, 0x22421111U },
 
        /* DDR3 */
-       io_write_32(DBSC_SCFCTST2, 0x012F1123U);
+       { DBSC_SCFCTST2, 0x012F1123U },
 
        /* QoS Settings */
-       io_write_32(DBSC_DBSCHQOS00, 0x00000F00U);
-       io_write_32(DBSC_DBSCHQOS01, 0x00000B00U);
-       io_write_32(DBSC_DBSCHQOS02, 0x00000000U);
-       io_write_32(DBSC_DBSCHQOS03, 0x00000000U);
-       io_write_32(DBSC_DBSCHQOS40, 0x00000300U);
-       io_write_32(DBSC_DBSCHQOS41, 0x000002F0U);
-       io_write_32(DBSC_DBSCHQOS42, 0x00000200U);
-       io_write_32(DBSC_DBSCHQOS43, 0x00000100U);
-       io_write_32(DBSC_DBSCHQOS90, 0x00000100U);
-       io_write_32(DBSC_DBSCHQOS91, 0x000000F0U);
-       io_write_32(DBSC_DBSCHQOS92, 0x000000A0U);
-       io_write_32(DBSC_DBSCHQOS93, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS120, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS121, 0x00000030U);
-       io_write_32(DBSC_DBSCHQOS122, 0x00000020U);
-       io_write_32(DBSC_DBSCHQOS123, 0x00000010U);
-       io_write_32(DBSC_DBSCHQOS130, 0x00000100U);
-       io_write_32(DBSC_DBSCHQOS131, 0x000000F0U);
-       io_write_32(DBSC_DBSCHQOS132, 0x000000A0U);
-       io_write_32(DBSC_DBSCHQOS133, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS140, 0x000000C0U);
-       io_write_32(DBSC_DBSCHQOS141, 0x000000B0U);
-       io_write_32(DBSC_DBSCHQOS142, 0x00000080U);
-       io_write_32(DBSC_DBSCHQOS143, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS150, 0x00000040U);
-       io_write_32(DBSC_DBSCHQOS151, 0x00000030U);
-       io_write_32(DBSC_DBSCHQOS152, 0x00000020U);
-       io_write_32(DBSC_DBSCHQOS153, 0x00000010U);
-
-       /* Register write protect */
-       io_write_32(DBSC_DBSYSCNT0, 0x00000000U);
-}
+       { DBSC_DBSCHQOS00, 0x00000F00U },
+       { DBSC_DBSCHQOS01, 0x00000B00U },
+       { DBSC_DBSCHQOS02, 0x00000000U },
+       { DBSC_DBSCHQOS03, 0x00000000U },
+       { DBSC_DBSCHQOS40, 0x00000300U },
+       { DBSC_DBSCHQOS41, 0x000002F0U },
+       { DBSC_DBSCHQOS42, 0x00000200U },
+       { DBSC_DBSCHQOS43, 0x00000100U },
+       { DBSC_DBSCHQOS90, 0x00000100U },
+       { DBSC_DBSCHQOS91, 0x000000F0U },
+       { DBSC_DBSCHQOS92, 0x000000A0U },
+       { DBSC_DBSCHQOS93, 0x00000040U },
+       { DBSC_DBSCHQOS120, 0x00000040U },
+       { DBSC_DBSCHQOS121, 0x00000030U },
+       { DBSC_DBSCHQOS122, 0x00000020U },
+       { DBSC_DBSCHQOS123, 0x00000010U },
+       { DBSC_DBSCHQOS130, 0x00000100U },
+       { DBSC_DBSCHQOS131, 0x000000F0U },
+       { DBSC_DBSCHQOS132, 0x000000A0U },
+       { DBSC_DBSCHQOS133, 0x00000040U },
+       { DBSC_DBSCHQOS140, 0x000000C0U },
+       { DBSC_DBSCHQOS141, 0x000000B0U },
+       { DBSC_DBSCHQOS142, 0x00000080U },
+       { DBSC_DBSCHQOS143, 0x00000040U },
+       { DBSC_DBSCHQOS150, 0x00000040U },
+       { DBSC_DBSCHQOS151, 0x00000030U },
+       { DBSC_DBSCHQOS152, 0x00000020U },
+       { DBSC_DBSCHQOS153, 0x00000010U },
+};
 
 void qos_init_h3n_v30(void)
 {
        unsigned int split_area;
 
-       dbsc_setting();
+       rcar_qos_dbsc_setting(h3n_v30_qos, ARRAY_SIZE(h3n_v30_qos), true);
 
        /* use 1(2GB) for RCAR_DRAM_LPDDR4_MEMCONF for H3N */
        split_area = 0x1CU;